package com.sip.stream.utils.zfy.handler;

import android.app.Application;
import android.content.Context;
import android.content.Intent;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.sip.stream.utils.zfy.ZFYLocation;
import com.sip.stream.utils.zfy.ZFYPlatformCommonSettingViewModel;
import com.sip.stream.utils.zfy.config.IPlatformMediaConfig;
import com.sip.stream.utils.zfy.config.ZFYMediaConfig;
import com.sip.stream.utils.zfy.consumer.IGSPlatformConsumer;
import com.sip.stream.utils.zfy.encoder.IGSVideoEncoder;
import com.sip.stream.utils.zfy.status.ZFYStatus;

import io.reactivex.Single;

public interface IZFYPlatformHandler{
    IGSPlatformConsumer createGroupintercomConsumer(IGSVideoEncoder iGSVideoEncoder);

    IGSPlatformConsumer createPlatformConsumer(IGSVideoEncoder iGSVideoEncoder);

    Intent getGroupintercomIntent(Context context);

    String getPlatformDeviceId();

    void inputAudioData(byte[] bArr);

    boolean isRunning();

    boolean needGroupintercomVideoEncoder();

    void onKeyAction(int action);

    void postAlarmTypeToPlatform(String str, String str2);



    void registerPlatform(Context context);

    void reportAction(String str, String str2);

    Single<Boolean> setPlatformJsonSetting(String str);

    void setupApplication(Application application);

    Single<Boolean> startBind(Context context, String str, String str2, String str3, String str4);

    void startBusy();

    Single<Boolean> startFaceBind(String str);

    void stopBusy();

    void stopStreaming();

    void stopVideoStreaming();

    void switchAudioRecordMode(int i);

    void syncPlatformMediaConfig(IPlatformMediaConfig iPlatformMediaConfig);

    void unregisterPlatform();

    void updateLocation(ZFYLocation zFYLocation);

    void updateStatus(ZFYStatus zFYStatus);

    default Single<Boolean> setPlatformJsonConfig(JsonObject jsonObject) {
        return Single.just(Boolean.TRUE);
    }
}
